A virtual machine system sometimes consists of multiple physical machines and runs multiple hypervisors on a single machine. Each hypervisor can support multiple virtual machines, with each virtual machine running a guest to perform tasks for a user. From time to time a system administrator may want to move (“migrate”) a guest from one hypervisor to another for maintenance or performance reasons. The migration may be a “live migration,” which means that the guest can be moved without disconnecting its client or application.
When a guest migrates to a different hypervisor (“target hypervisor”), its network location is changed. Switching components in the network (to which the guest is coupled) need to be notified of the guest's new location, so that the guest can continue to receive packets at its new location.
One current approach is to rely on a device driver in the guest to forward the guest's network addresses to the target hypervisor, and the target hypervisor notifies the switching components. However, the guest operating system sometimes fails to supply a full list of the guest addresses to the device driver (e.g., when the network interface of the system operates in the promiscuous mode).